package string;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        //int compareToIgnoreCase(String str) 方法：与compareTo方式相同，但是忽略大小写比较
        String s1 = new String("abc");
        String s2 = new String("ac");
        String s3 = new String("ABc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareToIgnoreCase(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareToIgnoreCase(s3)); // 相同输出 0
        System.out.println(s1.compareToIgnoreCase(s4)); // 前k个字符完全相同，输出长度差值 -3
    }

    public static void main7(String[] args) {
        //与equals不同的是，equals返回的是boolean类型，而compareTo返回的是int类型。
        String s1 = new String("abc");
        String s2 = new String("ac");
        String s3 = new String("abc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareTo(s3)); // 相同输出 0
        System.out.println(s1.compareTo(s4)); // 前k个字符完全相同，输出长度差值 -3
    }

    public static void main6(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        String s3 = new String("Hello");

         //s1、s2、s3引用的是三个不同对象，因此==比较结果全部为false
         System.out.println(s1 == s2); // false
         System.out.println(s1 == s3); // false


        // equals比较：String对象中的逐个字符
        // 虽然s1与s2引用的不是同一个对象，但是两个对象中放置的内容相同，因此输出true
        // s1与s3引用的不是同一个对象，而且两个对象中内容也不同，因此输出false
        System.out.println(s1.equals(s2)); // true
        System.out.println(s1.equals(s3)); // false
    }

    public static void main5(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;

        // 对于基本类型变量，==比较两个变量中存储的值是否相同
        System.out.println(a == b); // false
        System.out.println(a == c); // true

        // 对于引用类型变量，==比较两个引用变量引用的是否为同一个对象
        String s1 = new String("hello");
        String s2 = new String("hello");
        String s3 = new String("world");
        String s4 = s1; System.out.println(s1 == s2); // false
        System.out.println(s2 == s3); // false
        System.out.println(s1 == s4); // true
    }
    public static void main4(String[] args) {
        // s1和s2引用的是不同对象 s1和s3引用的是同一对象
        String s1 = new String("hello");
        String s2 = new String("world");
        String s3 = s1; System.out.println(s1.length());// 获取字符串长度---输出5
        System.out.println(s1.isEmpty()); // 如果字符串长度为0，返回true，否则返回false


        //在Java中“”引起来的也是String类型对象
        System.out.println("gunadaowei".length());
    }

    public static void main3(String[] args) {
        String str = "abcdef";
        System.out.println(str.contains("bcd"));
        System.out.println(str.endsWith("def"));
    }
    public static void main2(String[] args) {
        //字符串截取
        String str  = "helloworld";
        String substring = str.substring(1);
        System.out.println(substring);//elloworld
        String substring1 = str.substring(1, 4);//[1,4)
        System.out.println(substring1);//ell


        //字符串去除空格
        String str2 ="   hello   world guan   ";
        String trim = str2.trim();//去除str2左右两边所有的空格    trim- 修剪
        System.out.print(trim);
        System.out.print("daowei");//验证右边的空格是否被去除
    }
    public static void main1(String[] args) {
        //字符串替换

        String str1 = "ababcabcdabcdef";
        String replace = str1.replace('a', 'A');
        System.out.println(replace);

        String replace1 = str1.replace("abc", "ABC");
        System.out.println(replace1);

        String s = str1.replaceAll("abc", "ABCD");
        System.out.println(s);

        String s1 = str1.replaceFirst("abc", "ABCD");
        System.out.println(s1);

        //字符串拆分
        String str = "zhangsan&wangwu&lisi&maqi&zhaoer";
        String[] split = str.split("&",3);//通过指定的字符切割 第二个参数是切割后最大的分组
        System.out.println(Arrays.toString(split));
        System.out.println("==============================");
        String sre2 = "127.0.0.1@qq";
        String[] split1 = sre2.split("\\.|@");// \\转义成一个\  \.转义成.  | 作为多个分割标志的连字符
        for (String ss : split1) {
            System.out.println(ss);
        }

    }
}
